
MMEffect t@X 

0.1.0.0 (2010/9/18) 
0.2.0.0 (2010/12/12) MME Ver0.20
@EOFFSCREENRENDERTARGETZ}eBNXǉ
@ECONTROLOBJECTZ}eBNXŎ擾ł̒ǉ
@ECONTROLOBJECTZ}eBNXQƂIuWFNg̕`揇̐ɘa
@EEDGECOLORZ}eBNXǉ
@EVIEWPORTPIXELSIZEZ}eBNX̋Lq~XC
@Eꕔ{C
0.2.2.0 (2010/12/16) MME Ver0.22
@ERENDERCOLORTARGETOFFSCREENRENDERTARGETZ}eBNXł́AMiplevels̎w@ύX
0.2.3.0 (2010/12/20) MME Ver0.23
@ECONTROLOBJECTZ}eBNX̕⑫ǋL
0.2.4.0 (2011/02/09) MME Ver0.24
@ECONTROLOBJECTZ}eBNXɎwłIuWFNg"(self)"ǉ
@ETEXTUREVALUEZ}eBNXǉ
0.2.6.0 (2010/02/21) MME Ver0.26
@EDraw=GeometryR}hɂĂ̋LqC
0.2.7.0 (2011/05/22) MME Ver0.27
@E_INDEXZ}eBNXǉ
@EVertexCountp[^SubsetCountp[^ǉ
@Eopaddp[^̒ǉ
@ETEXTUREVALUEZ}eBNX̕⑫ɒǋL
0.2.8.0 (2012/03/26) MME Ver0.28
@ECONTROLOBJECTZ}eBNXɂĂ̋LqꕔC
0.3.0.0 (2012/09/19) MME Ver0.30
@EOFFSCREENRENDERTARGETZ}eBNXDefaultEffectɎw\
@@ȃGtFNgƂ"main_default"ǉ
0.3.3.0 (2013/02/13) MME Ver0.33
@EeNX`̍ގ[tpZ}eBNXiADDINGTEXTUREjǉ
@EPMXf̃TueNX`ɑΉiUseSphereMap, use_spheremap, use_subtextureQƁj
@EMATERIALTOONTEXTUREZ}eBNXǉ
@EGROUNDSHADOWCOLORZ}eBNXǉ
@EMME_MIPMAP}Nǉ



Ẽt@Xł́AMMEffectFZ}eBNXAme[VɂĉĂB
@GtFNgt@Ĉ̂̃t@XɂẮAȉQƂ̂ƁB
@
@@GtFNgt@CtH[}bg http://msdn.microsoft.com/ja-jp/library/bb173005(v=VS.85).aspx
@@HLSL̃t@X            http://msdn.microsoft.com/ja-jp/library/bb509638(v=VS.85).aspx

EZ}eBNXAme[V̎dl̍́ANVIDIASASQlɂB
@@http://developer.nvidia.com/object/using_sas.html
@́AFX Composerp̃GtFNgt@C삷邱ƂۏႷ̂ł͂ȂB



P@eNjbNƃpX

1.1@\

GtFNgt@ĆAȉ̂悤ȁAeNjbNƃpXɂKw\ɂȂĂB

/**********************************/
p[^錾1
p[^錾2
...

technique eNjbN1 {
    pass pX1 {
        VertexShader = c
        PixelShader  = c
    }
    pass pX2 {
        VertexShader = c
        PixelShader  = c
    }
    c
}

technique eNjbN2 {
    pass pX1 {
        VertexShader = c
        PixelShader  = c
    }
    pass pX2 {
        VertexShader = c
        PixelShader  = c
    }
    c
}
/**********************************/

eNjbN͂Pȏ̃pX\B
P̃pX1̃_OɑΉĂA
eNjbÑpX\Ăꍇ́A
̃eNjbN}`pX_Ogp邱ƂӖĂB


eNjbNƃpXɂ́AAme[VƌĂ΂ݒlLq邱ƂłB
Ame[V́Aȉ̂悤ɁAeNjbNEpX̌ɁA"<"">"ň͂ނ悤ɂċLqB
ȂAAme[V̑啶̈Ⴂ͖B

/******************************************************/
technique Tech1 < string Subset = "1-6,8"; > {
    pass Pass1 < string Script = "Draw=Buffer;"; > {
        ...
    }
    pass Pass2 {
        ...
    }
}
/******************************************************/

܂AeNjbNƃpXɂ́AXNvgƌĂ΂ȃAme[V
w肷邱ƂłBɂẮARŐB


1.2@eNjbÑAme[V

eNjbÑAme[Vɂ́A
̃eNjbNǂ̏ʂ̕`Ɏgp邩̏LqB


̏ɂ́Aȉ̂̂włB

EIuWFNg̃TuZbgԍiIuWFNg̃}eA̔ԍj
E`ΏہiIuWFNg{/e/֊s/ZtVhEpZlvbgj
E`tOieNX`gpON/OFFAXtBA}bvgpON/OFFAgD[_OgpON/OFFj

̏ƍ́AGtFNgt@CɏĂ鏇ɍs邽߁A
̃eNjbNŎgpdȂĂꍇ́A
GtFNgt@CŐɋLqĂ̂D悳B
ɍveNjbNGtFNgt@Cɑ݂ȂꍇA
MMDW̃VF[_gpB


Ame[V

Estring Subset
@@̃eNjbNKpTuZbg̔ԍw肷B
@@PMDf̏ꍇA̓f̍ގԍɑΉB
@@
@@Ame[Vȗɂ́ASẴTuZbgKpΏۂƂȂB
@@
@@"0,3,5"̂悤ɁAJ}؂Ŕԍ񋓂邱ƂŁA̔ԍwłB
@@܂A"6-10"Ȃǂ̂悤ɁAԍnCtłȂƂŁA͈͎w肪łB
@@"12-"̂悤ɁA͈͂̊Jnԍ݂̂w肵ꍇ́Aȍ~̑SĂ̔ԍΏۂƂȂB

@@F string Subset = "0-6,8";

Estring MMDPass
@@̃eNjbNKp`Ώۂw肷B
@@ȉ̂ꂩw肷B̋敪́AMMD̕`菇ɗRB

@@"object"    : IuWFNg{́iZtVhEOFFj
@@"zplot"     : ZtVhEpZlvbg
@@"object_ss" : IuWFNg{́iZtVhEONj
@@"shadow"    : eiZtVhEł͂ȂPȉej
@@"edge"      : ֊siPMDf̂݁j

@@Ame[Vȗɂ́A"object"w肵Ƃ݂ȂB

@@F string MMDPass = "object";

Ebool UseTexture
@@eNX`gp̗Lw肷B
@@̃eNjbNAeNX`gpTuZbĝ݂ΏۂƂꍇɂ́Atruew肷B
@@tɁAeNX`gpȂTuZbĝ݂ΏۂƂꍇɂ́Afalsew肷B

@@Ame[Vȗɂ́AeNX`̗L͖B

@@F bool UseTexture = true;

Ebool UseSphereMap
@@XtBA}bvgp̗Lw肷B
@@̃eNjbNAXtBA}bvgpTuZbĝ݂ΏۂƂꍇɂ́Atruew肷B
@@iPMXfɂāAXtBA[hɃTueNX`w肵ꍇ܂ށj
@@tɁAXtBA}bvgpȂTuZbĝ݂ΏۂƂꍇɂ́Afalsew肷B

@@Ame[Vȗɂ́AXtBA}bv̗L͖B

@@F bool UseSphereMap = false;

Ebool UseToon
@@gD[_Ogp̗Lw肷B
@@̃eNjbNAgD[_OgpIuWFNgiPMDfjΏۂƂꍇɂ́Atruew肷B
@@tɁAgD[_OgpȂIuWFNgiANZTjΏۂƂꍇɂ́Afalsew肷B

@@Ame[Vȗɂ́AgD[_Ogp̗L͖B

@@F bool UseToon = true;


gp
    
    //ZtVhEON̏ꍇATuZbgNo.0`6No.8ɂ́ATech1KpA
    //TuZbgNo.7No.9`ɂ́ATech2KpB
    //ZtVhEOFF̏ꍇATech3KpB

    technique Tech1 <
        string MMDPass = "object_ss"; 
        string Subset = "0-6,8";
    > {
        ...
    }

    technique Tech2 <
        string MMDPass = "object_ss"; 
        string Subset = "7,9-";
    > {
        ...
    }

    technique Tech3 <
        string MMDPass = "object"; 
    > {
        ...
    }

⑫
@EÓłȂeNjbN͏OB
@@http://msdn.microsoft.com/ja-jp/library/bb206324(v=VS.85).aspx
@EMMDPass="object","object_ss"ȊÕeNjbNł́AUseTexture,UseSphereMap,UseToon͐@\ȂB




Q@p[^̃Z}eBNXƃAme[V

ȍ~ł́AMMEffectp̃GtFNgt@CŎgpłA
p[^̃Z}eBNXƃAme[VɂĐB

p[^̐錾Z}eBNXAme[VŏC邱ƂŁA
_OɕKvȗlXȏÃp[^Ď擾łB


p[^̃Z}eBNXƃAme[V́Aȉ̂悤ɋLqB

   ^ p[^ : Z}eBNX < ^ Ame[V1 = l; ^ Ame[V2 = l; ... > ;

Z}eBNXɂẮAAme[Vw肵Ȃ̂B


ȂAZ}eBNXƃAme[V̑啶̈Ⴂ͖B


2.1 WIgϊ
QlFhttp://msdn.microsoft.com/ja-jp/library/bb206269(v=VS.85).aspx

WORLD
VIEW
PROJECTION
WORLDVIEW
VIEWPROJECTION
WORLDVIEWPROJECTION

@_̍WϊɎgpϊsB
@
@Wϊɂ́A[hϊAr[ϊAvWFNVϊiˉeϊjB
@
  6̃Z}eBNX́AꂼA
@@WORLD               : [hϊs
@@VIEW                : r[ϊs
@@PROJECTION          : vWFNVϊs@
@@WORLDVIEW           : [hϊs~r[ϊs
@@VIEWPROJECTION      : r[ϊs~vWFNVϊs
@@WORLDVIEWPROJECTION : [hϊs~r[ϊs~vWFNVϊs
@\B
@^float4x4B
@
@"WORLDINVERSE"̂悤ɁAZ}eBNX̖"INVERSE"tƁAes̋ts񂪓B
@܂A"WORLDTRANSPOSE"̂悤ɁA"TRANSPOSE"tƁAes̓]us񂪓B
@ts̓]us𓾂ɂ́A"INVERSETRANSPOSE"tB


@Ame[V
@Estring Object (ȗ\)
@@@r[ϊуvWFNVϊɂāAǂ_Ƃ邩w肷B
@@@"Camera"܂"Light"włBftHg"Camera"łB

@@@ʏ́AJ_ƂWϊsꍇɂ́A"Camera" w肷B
@@@ZtVhÊ߂ZlvbgA_ƂWϊsꍇɂ́A"Light"w肷B

  gp
    float4x4 WorldMatrix : WORLD ;
    float4x4 WorldViewProjMatrix : WORLDVIEWPROJECTION ;
    float4x4 LightViewMatrix : VIEW < string Object = "Light"; > ;
    float4x4 WorldInvMatrix : WORLDINVERSE ;
    float4x4 WorldViewProjTransMatrix : WORLDVIEWPROJECTIONTRANSPOSE ;

@⑫
@@EObjectAme[V"Light"w肵ƂɓśA
@@@MMD̃ZtVhEɎgpĂsƘAĂ邽߁A
@@@[\(V)]-[ZtVhE\(P)]ŁAZtVhE@\SOFFɂĂ܂ƁA
@@@lQƂłȂȂB


2.2 Cgƃ}eA
QlFhttp://msdn.microsoft.com/ja-jp/library/bb174694(v=VS.85).aspx

DIFFUSE
AMBIENT
EMISSIVE
SPECULAR
SPECULARPOWER
TOONCOLOR
EDGECOLOR
GROUNDSHADOWCOLOR

@3DIuWFNg̃}eA(ގ)̐FlA܂̓Cg̐FlB

@6̃Z}eBNX́AꂼA
@@DIFFUSE       @@: fBt[YFigUj
@@AMBIENT       @@: ArGgFij
@@EMISSIVE      @@: G~bVFiˌj
@@SPECULAR      @@: XyLFiʌj
@@SPECULARPOWER @@: XyL̋x
@@TOONCOLOR     @@: gD[F
@@EDGECOLOR     @@: ֊sF
@@GROUNDSHADOWCOLOR : nʉeF
@\B
@
@gD[F́APMDf̃gD[_OɂAe̐Fi̓Iɂtoon??.bmp̍̐Fj\B
@
@^́A"SPECULARPOWER"̂floatŁAȊOfloat3܂float4B
@F4̐iԁE΁EEAt@(x)jō\B^float3w肷ƃAt@lȗB


@Ame[V
@Estring Object (K{)
@@@CgFƁAIuWFNg̃}eAF̂ǂ擾邩w肷B
@@@"Light"܂"Geometry"włB

@@@IuWFNg̃}eAF擾ɂ́A"Geometry"w肷B
@@@CgF擾ɂ́A"Light"w肷B
@@@"SPECULARPOWER""EMISSIVE""TOONCOLOR"ɂ́ACgFȂ߁A"Light"͎włȂB

  gp
    float4 MaterialDiffuse  : DIFFUSE  < string Object = "Geometry"; >;
    float3 MaterialAmbient  : AMBIENT  < string Object = "Geometry"; >;
    float3 MaterialEmmisive : EMISSIVE < string Object = "Geometry"; >;
    float3 MaterialSpecular : SPECULAR < string Object = "Geometry"; >;
    float  SpecularPower    : SPECULARPOWER < string Object = "Geometry"; >;
    float3 MaterialToon     : TOONCOLOR;
    float3 EdgeColor        : EDGECOLOR;
    float3 LightDiffuse     : DIFFUSE   < string Object = "Light"; >;
    float3 LightAmbient     : AMBIENT   < string Object = "Light"; >;
    float3 LightSpecular    : SPECULAR  < string Object = "Light"; >;
    static float4 DiffuseColor  = MaterialDiffuse  * float4(LightDiffuse, 1.0f);
    static float3 AmbientColor  = MaterialAmbient  * LightAmbient + MaterialEmmisive;
    static float3 SpecularColor = MaterialSpecular * LightSpecular;
	float4 GroundShadowColor : GROUNDSHADOWCOLOR;

@⑫
@@E֊sFMMDPass="edge"TechniqueɂĂA擾łȂB
@@EnʉeFMMDPass="shadow"TechniqueɂĂA擾łȂB
@@Ȇ̊eFĺAMMDPass="zplot"܂MMDPass="edge"TechniqueɂẮA擾łȂB


POSITION
DIRECTION
@
@Cg܂̓J́A[hԓɂʒuьB
@^́Afloat3܂float4łB


@Ame[V
@Estring Object (K{)
@@@JуCĝǂ̍W擾邩w肷B
@@@"Camera"܂"Light"włB

  gp
    float3 LightDirection : DIRECTION < string Object = "Light"; >;
    float3 CameraPosition : POSITION  < string Object = "Camera"; >;

@⑫
@@EMMD̃CǵAfBNViCgł邽߁A
@@@Cg̈ʒuẂACǧƋt̖_ɂȂB


MATERIALTEXTURE
@
@}eAɐݒ肳ĂeNX`B

@Ame[V
@@Ȃ

  gp
    texture ObjectTexture : MATERIALTEXTURE;
    
    sampler ObjTexSampler = sampler_state
    {
        texture = <ObjectTexture>;
        MINFILTER = LINEAR;
        MAGFILTER = LINEAR;
        MIPFILTER = LINEAR;
        ADDRESSU  = WRAP;
        ADDRESSV  = WRAP;
    };
    // tex2D(ObjTexSampler, float2(x,y)) œeQƂł

@⑫
@@EeFĺAMMDPass="zplot"܂MMDPass="edge"TechniqueɂẮA擾łȂB

MATERIALSPHEREMAP
@
@}eAɐݒ肳ĂAXtBA}bveNX`B

@Ame[V
@@Ȃ

  gp
    texture ObjectSphereMap : MATERIALSPHEREMAP;
    
    sampler ObjSphSampler = sampler_state
    {
        texture = <ObjectSphereMap>;
        MINFILTER = LINEAR;
        MAGFILTER = LINEAR;
        MIPFILTER = LINEAR;
        ADDRESSU  = WRAP;
        ADDRESSV  = WRAP;
    };
    // tex2D(ObjSphSampler, float2(x,y)) œeQƂł

@⑫
@@EeFĺAMMDPass="zplot"܂MMDPass="edge"TechniqueɂẮA擾łȂB

MATERIALTOONTEXTURE
@
@}eAɐݒ肳ĂAgD[}bveNX`B

@Ame[V
@@Ȃ

  gp
    texture ObjectToonTexture : MATERIALTOONTEXTURE;
    
    sampler ObjToonSampler = sampler_state
    {
        texture = <ObjectSphereMap>;
        MINFILTER = LINEAR;
        MAGFILTER = LINEAR;
        MIPFILTER = NONE;
        ADDRESSU  = CLAMP;
        ADDRESSV  = CLAMP;
    };
    // tex2D(ObjToonSampler, float2(x,y)) œeQƂł

@⑫
@@EeFĺAMMDPass="zplot"܂MMDPass="edge"TechniqueɂẮA擾łȂB
@@E܂AANZT̏ꍇiUseToon=falsȅꍇj́A擾łȂB
@@EPMDfɂāAgD[gpȂ}eȀꍇ́ASʔF̃eNX`ƂȂB

ADDINGTEXTURE
MULTIPLYINGTEXTURE
ADDINGSPHERETEXTURE
MULTIPLYINGSPHERETEXTURE
@
@PMXގ[t̂߂́AeNX`уXtBA}bṽeNX`ɑ΂ẮA
@ZlяZlB

@Ame[V
@@Ȃ

  gp
    float4   TextureAddValue   : ADDINGTEXTURE;
    float4   TextureMulValue   : MULTIPLYINGTEXTURE;
    float4   SphereAddValue    : ADDINGSPHERETEXTURE;
    float4   SphereMulValue    : MULTIPLYINGSPHERETEXTURE;

@⑫
@@EeĺAMMDPass="object_ss"̏ꍇłA擾łȂB
@@E܂AANZT̏ꍇiUseToon=falsȅꍇj́AZl͑S0AZl͑S1ɂȂB


2.3 XN[

VIEWPORTPIXELSIZE

@_O^[Qbg̃XN[̃TCYB
@^float2BPʂ̓sNZB
@
@̒ĺAMMD̃XN[̓ItXN[_O^[Qbg̃TCYwB
@@Scripts"RenderColorTarget"R}hŁA_O^[QbgύXĂA
@@̒l͕ωȂB
@
@Ame[V
@@Ȃ

  gp
    float2 ScreenSize : VIEWPORTPIXELSIZE;

@⑫
@@EIɂ́AViewport.Width.Height̒lQƂĂB


2.4 

TIME
ELAPSEDTIME

@ԏB
@^floatBPʂ͕bB
@
@"TIME"́A0t[ڂ̍ĐԂ\B
@Ⴆ΁A0t[ڂł́A0.0ibjƂȂA45t[ڂł1.5ibjƂȂB
@
@"ELAPSEDTIME"́AO̕`悩̌oߎԂ\B
@Ⴆ΁A60fpsAVIo͎ɂ́A"ELAPSEDTIME"̒ĺA1/60 ňɂȂB
@
@Ame[V
@Ebool SyncInEditMode  (ȗ\)
@@@MMDҏW[hłꍇłAt[ƘA邩w肷B
@@@true܂falsew肷BftHgfalseB
@@@
@@@MMDҏW[ĥƂɂ́At[̍Đ͒~Ă邽߁A
@@@TIME̒lɃt[ԂƘAĂƁA
@@@ҏW[h́A̒lgpĂAj[V~邱ƂɂȂB
@@@
@@@̃Ame[Vfalsew肳ĂƁA
@@@ҏW[hATIMEELAPSEDTIME̒lɂ́At[Ԃł͂ȂVXeԂgpB
@@@ɂAҏW[hłAj[V~ȂȂB

  gp
    float ftime : TIME <bool SyncInEditMode=true;>;
    float elapsed_time : ELAPSEDTIME;
    static float fps = 1.0 / elapsed_time;

@⑫
@@ESyncInEditMode=truȅꍇAELAPSEDTIME̒ĺAMMDł̃t[ړɂA0}CiXɂȂ肤B


2.5 }EX

MOUSEPOSITION

@}EX݈̌ʒuB
@^float2B

@MMD̕`̈̒S(0,0)ƂA(-1,-1)AE(1,1)ɂȂB
@xyW̎́AvWFNVΐA_WƓłB

@Ame[V
@@Ȃ

  gp
    float2 pos : MOUSEPOSITION;


LEFTMOUSEDOWN
MIDDLEMOUSEDOWN
RIGHTMOUSEDOWN

@}EX{^ɊւB
@^float4B
@
@擾łĺAȉ4ȂB
@EŌɃ{^ꂽƂ̃}EX̍Wixyj
@E݃{^Ă邩 i0 or 1j
@EŌɃ{^ꂽ_TIMEl(b)
@
@ȂA}EX̍W̎́AMOUSEPOSITIONƓłB

@Ame[V
@@Ȃ

  gp
    float4 mouse_down : LEFTMOUSEDOWN;
    static float2 pos = mouse_down.xy;
    static bool is_pressed = (mouse_down.z != 0);


2.6 Rg[IuWFNg

CONTROLOBJECT

@w肵IuWFNǵAW⃏[hϊs擾B
@ɁAVF[_ɕKvȃp[^MMDォ琧䂷ꍇɎgpB
@
@^bool, float, float3, float4܂float4x4B
@
@gp^ɂāA擾ł񂪈قȂB
@
@Ebool
@@@w肵IuWFNg\Ă邩ۂ
@Efloat
@@@w肵IuWFNg̃XP[Ol
@Efloat3, float4
@@@w肵IuWFNg̍WiItZbgj
@Efloat4x4
@@@w肵IuWFNg̃[hϊs

@܂AitemAme[Vɓȕw肷邱ƂɂA
@ȊO̒l擾łB

@Ame[V
@Estring name  (K{)
@@@IuWFNg̃t@Cw肷itH_pX͊܂߂ȂjB
@@@
@@@ȃt@C"(self)"w肷ƁA
@@@̃GtFNg蓖ĂꂽIuWFNggΏۂɂłB
@@@
@@@܂Aȃt@C"(OffscreenOwner)"w肷ƁA
@@@ItXN[̃I[i[̃IuWFNgΏۂɂłiItXN[_Ȍꍇ̂݁jB
@@@ŁAItXN[̃I[i[Ƃ́AOFFSCREENRENDERTARGET錾ĂGtFNg
@@@蓖ĂꂽIuWFNgw
@@@
@Estring item  (ȗ\)
@@@IuWFNg̓Ȓl擾ꍇɎw肷B
@@@
@@@ȉ̂ꂩw肷B
@@@@{[ : PMDf̎w{[̍W܂̓[hϊs擾B
@@@@@@@@ @^float3,float4,float4x4̂ꂩB
@@@@\@ : PMDf̎w肵\̒l擾B^floatB
@@@@
@@@@"X"      : ANZT̈ʒuX(ANZTplX)B^floatB
@@@@"Y"      : ANZT̈ʒuY(ANZTplY)B^floatB
@@@@"Z"      : ANZT̈ʒuZ(ANZTplZ)B^floatB
@@@@"XYZ"    : ANZT̈ʒu(ANZTplX,Y,Z)B^float3B
@@@@"Rx"     : ANZT̉]X(ANZTplRx)B^floatB(Pj
@@@@"Ry"     : ANZT̉]Y(ANZTplRy)B^floatB
@@@@"Rz"     : ANZT̉]Z(ANZTplRz)B^floatB
@@@@"Rxyz"   : ANZT̉](ANZTplRx,Ry,Rz)B^float3B
@@@@"Si"     : ANZT̃TCY(ANZTplSi)B^floatBiQj
@@@@"Tr"     : ANZT̓x(ANZTplSi)B^floatB
@@@@@
@@@@@P@ĺApl̒lWAŕ\̂łB
@@@@@Q@ĺApl̒l10{̂łB
@@@@@
  gp
    //"stage01.x"\Ă邩ۂ擾
    bool flag : CONTROLOBJECT < string name = "stage01.x"; >;
    
    //"negi.x"̃XP[Ol擾
    float scaling : CONTROLOBJECT < string name = "negi.x"; >;

    //"negi.x"̉]X擾
    float rot_x : CONTROLOBJECT < string name = "negi.x"; string item = "Rx"; >;

    //"negi.x"̉]XxPʂŎ擾
    float rot_x_rad : CONTROLOBJECT < string name = "negi.x"; string item = "Rx"; >;
    static float rot_x = rot_x_rad * 180 / 3.14159265;

    //"㉹nN.pmd"̃{[u|jehjv̍W擾
    float3 pos : CONTROLOBJECT < string name = "㉹nN.pmd"; string item = "|jehj"; >;

    //"㉹nN.pmd"̕\u܂΂v̒l擾
    float morph : CONTROLOBJECT < string name = "㉹nN.pmd"; string item = "܂΂"; >;

@⑫
@@EPMDf̃[hϊs͒PʍsŕωȂ߁A
@@@ʏ́AXt@CiANZTjɑ΂ĎgpB
@@EANZT̃XP[OĺAMMDŃANZTSizeɎw肵l10{lɂȂB
@@@iIɂ́Alength(world_matrix._11_12_13) œlgpĂj
@@Ew肵t@C̃IuWFNg݂ȂꍇAȉ̒lݒ肳B
@@@@Xt@C̏ꍇF
@@@@@XP[Ol@F10
@@@@@ItZbgl@@F(0,0,0,1)
@@@@@[hϊsFXP[Osixyze10{j
@@@@@iteml@@@F0
@@@@PMDt@C̏ꍇF
@@@@@XP[Ol@F1
@@@@@ItZbgl@@F(0,0,0,1)
@@@@@[hϊsFPʍs
@@@@@{[̍W@@F(0,0,0,1)
@@@@@{[̕ϊsFPʍs
@@@@@\l@@@@@F0

@@EMME ver0.20AQƐ̃IuWFNgQƌ̃IuWFNgɕ`悳ĂĂA
@@@l擾ł悤ɂȂB
@@@
@@Ew肵OIuWFNg݂ꍇAȉ̗D揇ʂőIB
@@@@(1) Qƌ̃IuWFNg`揇ŁAł`揇߂́B
@@@@(2) `揇Ō̂

@@E_~[{[.pmdȂǂ̂悤ɁA_ȂIuWFNgɂẮA
@@@QƐɎw肵ĂW擾łȂB


2.7 eNX`֘A

ʏeNX`

@eNX`𐶐B

@^texture, texture2D, texture3D, textureCUBÊꂩB
@RENDERCOLORTARGET, RENDERDEPTHSTENCILTARGET, ANIMATEDTEXTURE ȊÕZ}eBNX͎w肵ĂB
@
@eNX`̓éATvݒ肵ŁAtex2D(s, t)֐ȂǂĂяoƂŎQƂłB


@Ame[V
@Estring ResourceType
@@@eNX`̎ނw肷B"2D", "3D", "CUBE"̂ꂩw肷B
@@@^Ɩl͎włȂB

@@@^"texture"łA"2D"ȊÕeNX`𐶐ꍇɂ́A
@@@Ȃ炸̃Ame[Vw肵Ȃ΂ȂȂBȊOł͏ȗ\łB

@Estring ResourceName
@@@eNX`̌ɂȂ摜t@Cw肷B
@@@T|[gĂt@CtH[}bǵAbmpA.ddsA.dibA.jpgA.pngA .tga łB
@@@΃pXŃt@Cw肵ꍇAGtFNgt@Ci[ĂtH_ƂȂB

@Eint Width
@Eint Height
@Eint Depth
@@@eNX`̕AA[sNZPʂŎw肷B
@@@[w肷̂̓{[eNX`̏ꍇ݂̂łB
@@@
@@@Dimensions, ViewportRatio Ƃ͓ɎwłȂB
@@@
@@@(Width,Height,Depth), Dimensions, ViewportRatiôw肳ĂȂꍇ́A
@@@ftHgĺA64sNZłB
@@@܂AResourceNamew肳ĂȂ΁A摜t@CTCYIɎ擾B
@@@
@Eint2(or int3) Dimensions
@@@eNX`̕AA[sNZPʂŎw肷B
@@@[w肷̂̓{[eNX`̏ꍇ݂̂łB
@@@
@@@ViewportRatio, Width, Height, DepthƂ͓ɎwłȂB
@@@
@Efloat2 ViewportRatio
@@@eNX`̕AA_O^[Qbg̃XN[̃TCYƂ̔Ŏw肷B
@@@XN[ƓTCỸeNX`𐶐ɂ́A"float2 ViewportRatio = {1.0, 1.0};" Ǝw肷B
@@@XN[̏c2{̃TCỸeNX`𐶐ɂ́A"float2 ViewportRatio = {2.0, 2.0};" Ǝw肷B
      
@@@Dimensions, Width, Height, DepthƂ͓ɎwłȂB
@@@
@Estring Format
@@@eNX`̃tH[}bgw肷B
@@@
@@@ȗꍇA"A8R8G8B8"gpB
@@@ResourceNamew肳ĂȂ΁A摜t@CtH[}bg擾A
@@@̃Ame[V̐ݒ͖B
@@@
@@@w\ȃtH[}bǵAD3DFORMATihttp://msdn.microsoft.com/ja-jp/library/bb172558(v=VS.85).aspxj
@@@QƁB
@@@
@@@"A8R8G8B8"A"FMT_A8R8G8B8"A"D3DFMT_A8R8G8B8"̂̏łwłB

@Eint Miplevels
@@@~bv}bvw肵xŐB
@@@ȗ邩0w肵ꍇASȃ~bv}bv `F[쐬B
@@@1w肷ƁA~bv}bv͐ȂB
      
@Eint Levels
@@@Miplevels̕ʖłB

  gp
    
    texture negi_tex < string ResourceName = "negi.bmp"; >;
    sampler TexSampler = sampler_state {
        texture = <negi_tex>;
    };
    
    texture2D map_tex <
        string ResourceName = "map.png";
        int Miplevels = 1;
        int Width = 64;
        int Height = 64;
    >;


RENDERCOLORTARGET

@_O^[QbgɎw\ȃT[tFCX𐶐B
@̃Z}eBNXw肵ĐeNX`́AXNvgRenderColorTarget
@w肷邱ƂłB
@_ÓAʏ̃eNX`ƓlɁAtex2D()֐œeQƂłB

@^texture, texture2D̂ꂩB
@
@Ame[V

@Eint Width, int@Height, int Depth
@Eint2 Dimensions
@Efloat2 ViewportRatio
@@@"ʏeNX`"QƁB
@@@ȗꍇA"float2 ViewportRatio = {1.0, 1.0};" Ƃݒ肪gpB

@Estring Format
@@@"ʏeNX`"QƁB
@@@ȗꍇA"A8R8G8B8"gpB

@Eint Miplevels
@Eint Levels
@@@"ʏeNX`"QƁB
@@@1܂0włB
@@@0w肵ꍇASȃ~bv}bv `F[쐬B
@@@1w肷ƁA~bv}bv͐ȂiftHgjB

  gp
    
    texture2D ScnMap : RENDERCOLORTARGET <
        float2 ViewPortRatio = {1.0,1.0};
        int MipLevels = 1;
        string Format = "A8R8G8B8" ;
    >;
    sampler2D ScnSamp = sampler_state {
        texture = <ScnMap>;
    };

    technique Tech <
        string Script = "RenderColorTarget0=ScnMap;
        ...


RENDERDEPTHSTENCILTARGET

@[xXeVT[tFCXiZobt@j𐶐B
@̃Z}eBNXw肵ĐeNX`́AXNvgRenderDepthStencilTarget
@w肷邱ƂłB

@RENDERCOLORTARGETŐeNX`Ƃ͈ႢÃZ}eBNXŐeNX`́A
@_OAeQƂ邱Ƃ͂łȂB

@^texture, texture2D̂ꂩB

@Ame[V

@Eint Width, int@Height, int Depth
@Eint2(or int3) Dimensions
@Efloat2 ViewportRatio
@@@"ʏeNX`"QƁB
@@@ȗꍇA"float2 ViewportRatio = {1.0, 1.0};" Ƃݒ肪gpB

@Estring Format
@@@"ʏeNX`"QƁB
@@@ȗꍇA"D24S8"gpB

  gp
    
    texture2D DepthBuffer : RENDERDEPTHSTENCILTARGET <
        float2 ViewPortRatio = {2.0,2.0};
        string Format = "D24S8";
    >;

    technique Tech <
        string Script = "RenderDepthStencilTarget=DepthBuffer;
        ...


ANIMATEDTEXTURE
@
@Aj[VeNX`𐶐B
@
@^texture, texture2D̂ꂩB
@
@ftHgł́At[ԂɘAĎIɃAj[VقA
@Rg[IuWFNgȂǂ́Aʂ̃p[^ɘAăAj[V邱ƂłB

@Ame[V

@Estring ResourceName (K{)
@@@eNX`̌ɂȂAAj[V摜t@Cw肷B
@@@T|[gĂt@CtH[}bǵA.gifiAjGIF)  .pngiAPNGjłB

@Efloat Offset (ȗ\)
@@@Aj[V̊JnԂ炷BiPʁFbj
@@@Ⴆ΁A2.5w肷ƁAAj[VJn2.5bx点邱ƂłB
@@@ftHgl0.0B

@Efloat Speed (ȗ\)
@@@Aj[V̍ĐXs[hw肷B
@@@Ⴆ΁A2.0w肷ƁAAj[V̑x2{ɂȂB
@@@ftHgl1.0B

@Estring SeekVariable (ȗ\)
@@@Aj[ṼV[NAt[ԈȊO̕@ōsꍇɎw肷B
@@@p[^w肷ƁÃp[^̒l̕ωɘAāAAj[VsB

@@@ftHgł́At[(TIME<SyncInEditMode=true>)ɘAăAj[VB

  gp
    
    // IuWFNgseek.xSize̕ωɘAăAj[V
    
    float atime: ControlObject < string Name = "seek.x"; >;
    
    texture AnimeTex : ANIMATEDTEXTURE <
        string ResourceName = "anime.png";
        string SeekVariable="atime";
    >;

@⑫
@@EAj[VvfpsAMMD̕`fpsꍇAR}B
@@EAPNGɂẮAGBytePʂ̋ȃAj[Vt@CiꉞjĐ\B


OFFSCREENRENDERTARGET
@
@ItXN[_O^[QbgB
@
@^texture, texture2D̂ꂩB
@
@ItXN[_O^[Qbg𐶐ƁA
@IɁAw肵őSIuWFNg̕`悪Ã_O^[Qbgɑ΂čs悤ɂȂB
@
@_Oʂ́Aʏ̃eNX`Ɠltex2D()֐ŎQƂłB

@Ame[V

@Eint Width, int@Height, int Depth
@Eint2 Dimensions
@Efloat2 ViewportRatio
@@@"ʏeNX`"QƁB
@@@ȗꍇA"float2 ViewportRatio = {1.0, 1.0};" Ƃݒ肪gpB

@Estring Format
@@@"ʏeNX`"QƁB
@@@ȗꍇA"A8R8G8B8"gpB

@Eint Miplevels
@Eint Levels
@@@"ʏeNX`"QƁB
@@@1܂0włB
@@@0w肵ꍇASȃ~bv}bv `F[쐬B
@@@1w肷ƁA~bv}bv͐ȂiftHgjB

@Efloat4 ClearColor
@@@_O^[QbgNAFݒ肷B
@@@Ŏw肵FŁA_O^[Qbg͎IɃNAB
@
@Efloat ClearDepth
@@@[xXeVT[tFCXNAZlݒ肷B
@@@Ŏw肵ZlŁA[xXeVT[tFCX͎IɃNAB
@
@Ebool AntiAlias
@@@_OɃA`GCAXgpBftHgfalseB
@@@A`GCAXL̏ꍇArfI͑邽߁A
@@@@eNX`̃TCYɂ͒ӂ邱
@
@Estring Description
@@@ItXN[_O^[Qbg̐w肷B
@@@Ŏw肵񂪁AGtFNgGUI_CAOŕ\B
@
@Estring DefaultEffect
@@@ItXN[_OŎgpGtFNgt@C̊蓖ĕ@w肷B
@@@P̊蓖ẮAȉ̏ŋLqB
@@@
@@@@@"(IuWFNgt@C)=(GtFNgt@C);"
@@@
@@@IuWFNgɎgpGtFNgt@C؂ւɂ́Å蓖Ă𕡐LqB
@@@LqꍇALqŃIuWFNgt@CrAŏɃ}b`̂gpB
@@@
@@@@F string DefaultEffect = "self=hide; Mirror*.x=hide; *=MirrorObject.fx;";
@@@
@@@IuWFNgt@Cɂ"*""?"ɂ郏ChJ[hwłB
@@@ȃIuWFNgt@CƂ"self"włÁA
@@@OFFSCREENRENDERTARGETGtFNg蓖ĂꂽIuWFNgg\B
@@@
@@@GtFNgt@Cɑ΃pXŃt@Cw肵ꍇA
@@@Qƌ̃GtFNgt@Ci[ĂtH_ƂȂB
@@@
@@@܂AȃGtFNgt@CƂ"none""hide"włA
@@@́AuGtFNgȂvƁu\v\B
@@@܂A"main_default"w肷ƁACXN[ł̃ftHgƓlȁA
@@@IuWFNgt@CpXɊÂfxt@Cemdt@C̎sB
@@@
  gp
    
    texture MirrorRT: OFFSCREENRENDERTARGET <
        string Description = "OffScreen RenderTarget for Mirror.fx";
        int Width = 256;
        int Height = 256;
        float4 ClearColor = { 1, 1, 1, 1 };
        float ClearDepth = 1.0;
        bool AntiAlias = true;
        string DefaultEffect = 
            "self = hide;"
            "Mirror*.x = hide;"
            "*=MirrorObject.fx;";
    >;

TEXTUREVALUE

@w肵eNX`́AeNZ擾ĔzɊi[B
@gpƁAVTF(Vertex Texture Fetching)ɑΉȂłA
@_VF[_eNX`̒lQƂłiB⑫QƁj
@
@^float42zi[c][]jA1zB
@
@Ame[V
@Estring TextureName  (K{)
@@@eNX`̃p[^w肷B
@@@
  gp
    float4 ParticleBaseArray[TEX_HEIGHT][TEX_WIDTH] : TEXTUREVALUE <
        string TextureName = "ParticleBaseTex";
    >;
    float4 ParticleBaseArray2[TEX_HEIGHT] : TEXTUREVALUE <
        string TextureName = "ParticleBaseTex2";
    >;

    float4 color1 = ParticleBaseArray[v][u];
    float3 color2 = ParticleBaseArray2[idx].rgb;
   
@⑫
@@E萔WX^Œln߁AQƂłeNZ200xxB
@@Ez̃TCYeNX`̃TCYƈvĂȂꍇAl擾łۏ؂͖B
@@@ꕔ̊ł́A2̗ݏ̃TCỸeNX`쐬łA
@@@ȊÕTCYw肵ĂAIɃTCYgč쐬邱Ƃ̂ŒӁB
@@EeNX`̒l̎擾́At[̊Jnɍs܂B
@@@̂߁ArőΏۂ̃eNX`XVĂÃt[ɂȂ܂Œl͍XV܂B

2.8 GtFNgt@C

STANDARDSGLOBAL
@
@SASiStandard Annotations and Semanticsj̃o[Ww肷B
@܂AGtFNgt@CŜɊւAme[VLq邽߂ɂpB
@
@p[^ "Script"A^ floatAlƂăo[Wԍ 0.8 w肷邱ƁB
@
@
@Ame[V

@Estring ScriptOutput (ȗ\)
@@@"color"ȊO̒l͎włȂBftHgl̒lłB
@@@
@Estring ScriptClass (ȗ\)
@@@̃GtFNgt@C̖ړIi`悷GtFNgjw肷B
@@@
@@@ȉ̂ꂩw肷B
@@@
@@@@"object"        : IuWFNg`悷BiftHgj
@@@@"scene"         : XN[obt@`悷B
@@@@"sceneorobject" : L̗B
@@@
@@@{Iɂ́Aʏ̃IuWFNg`p̃GtFNgł́A"object"w肵A
@@@vGtFNgA|XgGtFNgł́A"scene"w肷B
@@@
@@@"object"w肵ꍇApX̃XNvg Draw=Buffer sĂ͂ȂȂB
@@@܂A"scene"w肵ꍇA Draw=Geometry sĂ͂ȂȂB
@@@"sceneorobject"w肵ꍇ́AsłB
@@@
@Estring ScriptOrder (ȗ\)
@@@̃GtFNgt@C̎s^C~Ow肷B
@@@
@@@ȉ̂ꂩw肷B
@@@
@@@@"standard"    : IuWFNg`悷BiftHgj
@@@@"preprocess"  : IuWFNg̕`ɕ`悷BvGtFNgpB
@@@@"postprocess" : IuWFNg̕`̌ŕ`悷B|XgGtFNgpB
@@@
@@@mɂ́ApreprocesŝɑOɁApostprocess̑OieNjbÑXNvg̐擪
@@@@"ScriptExternal=Color܂ŁjsB
@@@
@Estring Script (ȗ\)
@@@gpeNjbŇw肷B
@@@ʏ́AGtFNgt@CɋLqĂ鏇ŁAgp\ȃeNjbN(1.2)A
@@@̃Ame[VpƁǍ𖾎IɎwłB
@@@
@@@ȉ̏Ŏw肷B
@@@   "Technique=Technique?eNjbN1:eNjbN2:`;"
@@@
@@@@Fstring Script = "Technique=Technique?SimplePS:TexturedPS:SimpleQuadraticPS:TexturedQuadraticPS;";
@@@
@@@ȂAgpeNjbNP̏ꍇɂ́Aȉ̂悤ɂwłB
@@@  string Script = "Technique=MainTech;";


  gp
    
@@//ʏGtFNg̏ꍇ
    float Script : STANDARDSGLOBAL <
        string ScriptOutput = "color";
        string ScriptClass = "object";
        string ScriptOrder = "standard";
    > = 0.8;

@@//|XgGtFNg̏ꍇ
    float Script : STANDARDSGLOBAL <
        string ScriptOutput = "color";
        string ScriptClass = "scene";
        string ScriptOrder = "postprocess";
    > = 0.8;


2.9 p[^

ȉ̖Õp[^́AZ}eBNXŎIɒlݒ肳B

parthf (bool^)
@ZtVhEtOB
@ZtVhEmode1/mode2ɑΉifalsemode1jB

spadd (bool^)
@XtBA}bvZtOitrueŉZjB

transp (bool^)
@tOitrueŔjB
@[\(V)]-[]ɑΉB

use_texture (bool^)
@eNX`gptOB
@`撆̃}eAeNX`gpꍇtrueB

use_spheremap (bool^)
@XtBA}bvgptOB
@`撆̃}eAXtBA}bvgpꍇtrueB
@ȂAPMXf̃TueNX`gpꍇtrueƂȂB

use_subtexture (bool^)
@TueNX`gptOB
@PMXf̃TueNX`gpꍇtrueB

use_toon (bool^)
@gD[_OgptOB
@PMDf̏ꍇtrueB

opadd (bool^)
@ZtOB
@IuWFNg̕`悪Z[hɐݒ肳ĂꍇtrueB

VertexCount (int^)
@IuWFNg̒_B

SubsetCount (int^)
@IuWFNg̃TuZbgB

gp
  bool parthf;
  bool use_texture;
  bool use_toon;
  int VertexCount;

⑫
@EMMDPass="object","object_ss"ȊȌꍇÃp[^ɐlݒ肳ۏ؂͂ȂB


2.9 _VF[_Z}eBNX

_INDEX
@
@_VF[_ɂāA_̃CfbNXl擾邽߂̃Z}eBNXB
@_VF[_̓̓p[^ŎgpłB^intB
@
  gp
    
    VS_OUTPUT Basic_VS(float4 Pos : POSITION, int index: _INDEX) {
        VS_OUTPUT Out;
        Out.Pos = mul( Pos, WorldViewProjMatrix );

        float f = (float)index/VertexCount;
        Out.Color = float4(f,f,f,1);
        
        return Out;
    }

@⑫
@@E_VF[_ɓnߒňUfloat^ɕϊĂ邽߁A
@@@CfbNXl 2^24=16777216 𒴂ƁAmȒl擾łȂB


2.10 }N

MME_MIPMAP

@MMDAeNX`̃~bv}bvɑΉĂꍇɒ`B

@gp

    sampler ObjTexSampler = sampler_state {
@      texture = <ObjectTexture>;
    #ifdef MME_MIPMAP
        MIPFILTER = LINEAR;
    #endif
    };

@⑫

    


R@XNvg

eNjbNƃpXɂ́AXNvgƌĂ΂ȃAme[Vw肷邱ƂłB

  technique eNjbN < string Script = "R}h; R}h; ..." ; > { ... }
  pass pX < string Script = "R}h; R}h; ..." ; > { ... }

sɂ́ÃR}hALqɒsB

̃XNvggp邱ƂŁA_O^[Qbg̕ύXNAA
pX̃[vȂǂsƂłB

|XgGtFNgȂǂ̓ȏȂ̂ł΁AʏAXNvg̎w͕svłB
eNjbÑXNvgȗꍇAPɃeNjbÑpXɎsB
܂ApX̃XNvgȗꍇA"Draw=Geometry"sB


R}h

ERenderColorTarget=(eNX` or )
ERenderColorTarget0=(eNX` or )
ERenderColorTarget1=(eNX` or )
ERenderColorTarget2=(eNX` or )
ERenderColorTarget3=(eNX` or )
@@
@@_O^[Qbgݒ肷B
@@RenderColorTarget́ARenderColorTarget0̕ʖłB
@@
@@ʏARenderDepthStencilTargetR}hƃZbgŎgpB
@@܂ARenderColorTarget1`3͒PƂŎgp邱Ƃ͂łAKRenderColorTarget0ƃZbgŎgpB
@@
@@ɂ́ARENDERCOLORTARGETZ}eBNXŐ錾ꂽtexturep[^̖Ow肷B
@@ftHg̃_O^[QbgɃZbgꍇ́A󔒂w肷B
@@
@@ȂAݒ肳ꂽ_O^[QbǵAēx̃R}hsȂ΁A
@@eNjbN̏܂ŕύXꂽ܂܂łB

ERenderDepthStencilTarget=(eNX` or )
@@
@@[xXeVT[tFCXiZobt@jݒ肷B
@@ʏARenderColorTarget0R}hƃZbgŎgpB
@@
@@ɂ́ARENDERDEPTHSTENCILTARGETZ}eBNXŐ錾ꂽtexturep[^̖Ow肷B
@@ftHg̐[xXeVT[tFCXɃZbgꍇ́A󔒂w肷B

EClearSetColor=(p[^)
@@
@@_O^[QbgNAFݒ肷Bi܂NA͂Ȃj
@@
@@ɂ́Afloat4^̃p[^̖Ow肷B
@@̃p[^ɐݒ肳ꂽlA_O^[QbgNAFƂȂB

EClearSetDepth=(p[^)
@@
@@[xXeVT[tFCXNAZlݒ肷Bi܂NA͂Ȃj
@@
@@ɂ́Afloat^̃p[^̖Ow肷B
@@̃p[^ɐݒ肳ꂽlA[xXeVT[tFCXNAZlƂȂB

EClear=Color
@@
@@_O^[QbgNAB
@@NAFɂ́AClearSetColorR}hŐݒ肳ꂽlgpB

EClear=Depth
@@
@@[xXeVT[tFCXNAB
@@NAZlɂ́AClearSetDepthR}hŐݒ肳ꂽlgpB

EScriptExternal=Color
@@
@@̃IuWFNg`悷B
@@̃R}h́AeNjbÑXNvgłgpłȂB
@@
@@́A|XgGtFNgiSTANDARDSGLOBALp[^ScriptOrderAme[V
@@"postprocess"w肳ꂽGtFNgt@Cjł̂ݎsłB
@@
@@ʏA|XgGtFNgł́A͗p̃eNX`_O^[Qbgɐݒ肵ŁA
@@̃eNX`ցÃIuWFNg_OB
@@́ÃIuWFNg_OۂɁÃR}hsB
@@iTips̃|XgGtFNgQƁj
@@
@@|XgGtFNgł́AeNjbÑXNvgŁAK1񂾂sȂ΂ȂȂB

EPass=(pX)
@@
@@w肵pXsB
@@̃R}h́AeNjbÑXNvgłgpłȂB
@@
@@eNjbNɃXNvgw肵ꍇAIɂ̃R}hgpȂA
@@̃pXsȂB

ELoopByCount=(p[^)
ELoopEnd=
@@
@@w肵񐔂AXNvg̈ꕔ[vB
@@̃R}h́AeNjbÑXNvgłgpłȂB
@@
@@ɂ́Al^iint,bool,floatj̃p[^̖Ow肷B
@@̃p[^ɐݒ肳ꂽl̉񐔂ALoopByCountLoopEnd܂łɂR}h
@@JԂsB
@@[v̓lXg\łB
@@
@@ȉ̗ł́A3pXp0sꂽApXp1sB
    
    /****************************/
    int Count = 3;
    
    technique TShader <
        string Script =
            "LoopByCount=Count;"
            "Pass=p0;"
            "LoopEnd=;"
            "Pass=p1;"; 
    > {
    /****************************/

ELoopGetIndex=(p[^)
@@
@@[ṽ[vJE^̒lAw肵p[^ɐݒ肷B
@@̃R}h́ALoopByCountLoopEnd܂ł̊ԂłgpłȂB

EDraw=Geometry
@@
@@IuWFNg`悷B
@@̃R}h́ApX̃XNvgłgpłȂB
@@
@@pX̃XNvgȗꍇÃR}hsB
@@STANDARDSGLOBALScriptClass"scene"w肵ĂꍇA
@@̃R}hsĂ͂ȂȂB

EDraw=Buffer
@@
@@_O^[Qbg̃XN[ƈvTCÝA`̃|S`悷B
@@̃R}h́ApX̃XNvgłgpłȂB
@@
@@|XgGtFNgvGtFNgŎgpB
@@STANDARDSGLOBALScriptClass"object"w肵ĂꍇA
@@̃R}hsĂ͂ȂȂB

ERenderPort=*
@@
@@ΉB


gp
    technique TShader <
        /* 2̕\L("`" "`")̊Ԃɋ󔒕Ȃ΁A
           ͂ЂƑ̕Ƃ݂Ȃ邽߁Aȉ̂悤ɕċLqł */
        string Script = 
            "RenderColorTarget0=RenderTarget;"
    	    "RenderDepthStencilTarget=DepthBuffer;"
    		"ClearSetColor=ClearColor;"
    		"ClearSetDepth=ClearDepth;"
    		"Clear=Color;"
    		"Clear=Depth;"
    	    "ScriptExternal=color;"
    	    "Pass=P0;" ;
    > {
        pass P0 < string Script= "RenderColorTarget0=; RenderDepthStencilTarget=; Draw=Buffer;" ; > {
            ...
        }
    }




S@Tips

MMDW̃VF[_gp

@IuWFNg̕`̈ꕔɂ̂݁AGtFNggpA
@ȊO̕`ɂMMDW̃VF[_gpꍇɂ́A
@MMDW̃VF[_gpʂ̃eNjbNAGtFNgt@CɋLqȂ΂悢B
@i"1.2 eNjbÑAme[V"QƁj
@
@@/************************************************************/
    /* GtFNgt@Cɂ̃eNjbN΁A
       IuWFNg`iZtVhEONjȊOMMDW̃VF[_ŕ`悳 */
      technique Tech1 < string MMDPass = "object_ss"; > {
          pass Pass1 {
              ...
          }
          pass Pass2 {
              ...
          }
      }
    /************************************************************/
@
@܂ApX̃ftHg̃VF[_MMDW̃VF[_ł邽߁A
@ȉ̂悤ɁApXVertexShaderPixelShaderݒ肵Ȃ΁A
@̃pX̕`ɂMMDW̃VF[_gpB
@
@@/************************************************************/
      technique Tech1 < string MMDPass = "object_ss"; > {
          pass Pass1 {
            // VertexShader = xxx
            // PixelShader  = xxx
          }
      }
    /************************************************************/
@

̃eNjbN

@ȉ̂悤ɁAeNjbNɂƁÃeNjbNł͈ؕ`悪sȂȂB
@𗘗pƁAIuWFNg̈ꕔ܂͑S̕`}~邱ƂłB

@@/*********************************************************/
      technique ShadowTech < string MMDPass = "shadow";  > {
         
      }
@@/*********************************************************/


IuWFNg̗LŃpXON/OFF

@ȉ̂悤ɃXNvgLqƁÃIuWFNg̕\ONɂȂĂԂ̂
@pXs邱ƂłB
@́A^Ultrue/falselƂĂ10ɉ߂邱Ƃ𗘗pĂB

@@/*********************************************************/
      bool flag : CONTROLOBJECT < string name = "aaa.x"; >;
      
      technique Tech1 <
          string Script =
              "LoopByCount=flag;"
              "Pass=Pass1;"
              "LoopEnd=;"
               ; 
      > {
          pass Pass1 {
              ...
          }
      }
@@/*********************************************************/


GtFNgt@CԂŃp[^L
@
@ʏAقȂGtFNgt@CԂŃp[^͋LȂB
@Ap[^̐錾"shared"L[[hw肷邱ƂɂA
@Õp[^GtFNgt@CԂŋL邱ƂłB
@
@ȉ̗ł́Aeffect1.fxŐeNX`Aeffect2.fxQƂłB
@̂悤ɁÃp[^錾"shared"L[[hw肷KvB
@܂AOłȂA^ƃZ}eBNXvЂ悤B
@
@@/************** effect1.fx ******************/
      
@@  shared texture ShadowBuffer : RENDERCOLORTARGET <
          float2 ViewPortRatio = {2.0,2.0};
          int MipLevels = 1;
          string Format = "A8R8G8B8" ;
      >;
      
@@/********************************************/

@@/************** effect2.fx ******************/
      
@@  shared texture ShadowBuffer : RENDERCOLORTARGET;
      
@@/********************************************/


if
@
@`ɂ΁AVF[_LqۂɁAł邾if̂悤ȏ
@gȂق悢B
@
@eNX`̗LŃVF[_̏؂ւ悤ȏꍇA
@use_texturep[^QƂāAVF[_ifŏ򂷂A
@eNX`LTuZbgƖTuZbgƂŁAeNjbN̂𕪂Ă܂قɕ`łB


uniformL[[h
@
  ֐̈̐錾"uniform"L[[hw肷ƁÄ̒lRpC̒萔Ƃė^邱ƂłB
@
@ȉ̗ł́ABasic_PS()ifARpCɏ̂ŁA
@ɂ鑬xቺ͔ijB
@
@@/*******************************************************************/
@@float4 Basic_PS( VS_OUTPUT IN, uniform bool useTexture ) : COLOR0
    {
        float4 Color = IN.Diffuse;
        if ( useTexture ) {
            Color *= tex2D( ObjTexSampler, IN.Tex );
        }
        ...
    }
    
    technique TechWithTex {
        pass P1 {
            /* useTexture=true ŃVF[_RpC */
            PixelShader  = compile ps_2_0 Basic_PS(true);  
            ...
        }
    }
    
    technique TechWithoutTex {
        pass P1 {
            /* useTexture=false ŃVF[_RpC */
            PixelShader  = compile ps_2_0 Basic_PS(false);
            ...
        }
    }
@@/*******************************************************************/


GtFNgt@Cł̓{gp
@
@{IɁARgȊOł́AGtFNgt@Cɓ{̕gp邱Ƃ͐ȂB
@
@Ďgpꍇ́AR[hɒӂ邱ƁB
@eNX`p̉摜t@C̃pXRg[IuWFNg̃IuWFNgȂǁA
@t@C̎wɓ{gpꍇ́ÃGtFNgt@C̕R[h
@KShift-JISłȂ΂ȂȂB


|XgGtFNg
@
@|XgGtFNgp̃GtFNgt@C쐬ꍇ́A
@ȉ̃p[^GtFNgt@CŐ錾ĂKvB
@i"STANDARDSGLOBAL"QƁj

    float Script : STANDARDSGLOBAL <
        string ScriptOutput = "color";
        string ScriptClass = "scene";
        string ScriptOrder = "postprocess";
    > = 0.8;
@
@
@܂AT^Iȃ|XgGtFNgł́AeNjbÑXNvgňȉ̏sB
@
@(1) _O^[QbgÕeNX`ɕύXANAB
      
@@@XNvgF
        "RenderColorTarget0=(RENDERCOLORTARGETeNX`);"
	    "RenderDepthStencilTarget=(RENDERDEPTHSTENCILTARGETeNX`);"
		"ClearSetColor=(NA̐F);"
		"ClearSetDepth=(NAZl);"
		"Clear=Color;"
		"Clear=Depth;"

@(2) vGtFNgCIuWFNgC̃|XgGtFNg`悷B
@@@̂ƂA`挋ʂ(1)Ŏw肵eNX`ɕۑB

@@@XNvgF
		"ScriptExternal=Color;"
@
@(3) _O^[Qbgɖ߂A`挋ʂ̃eNX`͂ƂāApXsB

@@@XNvgF
        "RenderColorTarget0=;"
	    "RenderDepthStencilTarget=;"
	    "Pass=(pX1);"
	    "Pass=(pX2);"
